package cn.edu.jxust.core.domain.repository;

import cn.edu.jxust.common.domain.dto.AutomaticData;
import cn.edu.jxust.common.domain.entity.Air;
import cn.edu.jxust.common.response.Result;
import com.baomidou.mybatisplus.extension.service.IService;
import java.util.List;

/**
 * @author QiuKangming
 * @since 2020-06-29
 */

public interface AirService extends IService<Air> {

    /**
     * 自动采集数据保存
     * @param data AutomaticData
     * @return Result
     */
    Result saveByAutoData(AutomaticData data);

    /**
     * 获取上一个小时上传数据的设备id号
     * @param date 日期
     * @param begin 开始时间
     * @param end 结束时间
     * @return List<Integer>
     */
    List<Integer> getLastHourDeviceIds(String date, String begin, String end);

    /**
     * 获取前一天设备上传的PM2.5和PM10的设备id号
     * @param date 日期
     * @param begin 开始时间
     * @param end 结束时间
     * @return List<Integer>
     */
    List<Integer> getLastDayPMDeviceIds(String date, String begin, String end);

    /**
     * 获取上一个小时除PM之外的气体浓度信息
     * @param deviceId 设备id号
     * @param date 日期
     * @param begin 开始时间
     * @param end 结束时间
     * @return List<Air>
     */
    List<Air> getLastHourAirListNoPM(Integer deviceId, String date, String begin, String end);

    /**
     * 获取前一天PM2.5和OM10的浓度信息
     * @param deviceId 设备id号
     * @param date 日期
     * @param begin 开始时间
     * @param end 结束时间
     * @return List<Air>
     */
    List<Air> getLastDayPM25AndPM10List(Integer deviceId, String date, String begin, String end);

    /**
     * 分页获取有问题的Air数据
     * @param page 第几页
     * @param size 一页几条数据
     * @param deviceId 设备id号，为空则查询所有设备
     * @param airType 气体类型， 为空则查询所有气体信息
     * @param beginDate 开始时间，
     * @param endDate 结束时间
     * @return Result
     */
    Result getHasExceptionAir(Integer page, Integer size, Integer deviceId, Integer airType, String beginDate, String endDate);

}
